GitHub Copilot in VS Code でインデックスを構築してワークスペース全体について質問できるようになりました
こんにちは、製造ビジネステクノロジー部の若槻です。
GitHub Copilot in VS Code October release (v0.22) より、ローカルにワークスペースのインデックスを構築し、プロジェクト全体について質問できるようになりました。
@workspace lets you ask questions about code in your current project. This is implemented using either GitHub’s code search or a smart local index that VS Code constructs.
今回はこの機能について実際に試してみました。
試してみた
前提
- Visual Studio Code 1.95.2
- GitHub Copilot Extension v1.245.0
- GitHub Copilot Chat Extension v0.22.2
使用したユーザーは GitHub Copilot Business プランを利用しています。
使用した GitHub リポジトリはこちらのサーバーレスアプリケーションサンプルです。
インデックスを構築する
ワークスペースのインデックスの構築方法には、以下の 2 つがあります。
- コマンドパレットから
GitHub Copilot: Build Local Workspace index
コマンドを実行した時 - ワークスペースについての質問の初回実行時
今回はコマンド実行でインデックスを構築してみます。
するとステータスバーで Indexing workspace と表示され、インデックスの構築が始まります。
完了したらこの表示は消えます。今回はファイル数が 50 以内だったので数秒で完了しました。
ちなみに現在インデックスに含むことができる最大のファイルおよびフォルダ数は 2000 個とのことです。
インデックスを使用した質問をする
Copilot Chat で @workspace このワークスペースでは何の IaC でどのようなアプリケーションを構築できる?
と質問すると、"Workspace" というフラグが付与され、AWS CDK で実装している IaC に関する回答が返ってきました。回答内容はおおむね適切なものとなっています!
「Used ◯◯ references」を開くと、どのリファレンスがコンテキストとして使われているかが確認できます。1 ファイルに複数のリファレンスがある場合もあるようです。
ちなみに @workspace
を付けない場合でもインデックスを使用した回答が返ってきているらしきパターンもありましたが基本的には必要なようです。
インデックスを使用しない質問も可能
質問時に "rerun without" をクリックするとインデックスを使用しない質問も可能です。
先ほどとは異なる回答が返ってきました。実際には使用できないコマンドが方法として提案されています。
ワークスペースで実装変更があった場合はインデックスは自動更新される
ワークスペース内で更新があった場合はどうなるでしょうか。
ファイルを次のように更新して npm scripts を追加します。
diff --git a/package.json b/package.json
index a4fd36c..52229c2 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
"name": "cdk-lambda-dynamodb-sample",
"version": "0.0.0-github-release",
"scripts": {
+ "hoge": "echo 'hoge'",
"check:format": "prettier --check --cache './packages/**/*.ts'",
"check:lint": "eslint --cache './packages/**/*.ts' --max-warnings=0 --resolve-plugins-relative-to .",
"check:type": "npm run check:type --workspaces --if-present",
@workspace このワークスペースで npm run hoge コマンドを実行すると何ができる?
と質問すると、新しい npm scripts に関する回答が返ってきました。ちゃんと反映されてますね!
さらなる検証としてライセンスファイルを新規追加してみます。
touch LICENSE.md
echo "ほげほげライセンス" > LICENSE.md
内容を参照して回答してもらえませんでした。
ファイルをコンテキストとして追加したら適切に回答してもらえました。このような場合もあるようです。
おわりに
GitHub Copilot in VS Code October release (v0.22) より、ローカルにワークスペースのインデックスを構築し、プロジェクト全体について質問できるようになったので、実際に試してみました。
Copilot Chat のコンテキストに含めたいファイルを #
で追加したりエディターで開いたりする必要が無いのは便利ですね。テクニックとして覚えておきたいです。
以上